package com.atguigu.yygh.hosp.service;

import com.atguigu.yygh.model.hosp.Schedule;
import com.atguigu.yygh.vo.hosp.ScheduleOrderVo;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Map;

/**
 * @param :1.8
 * @author :又菜又爱玩的→速趴塞亚锦←
 * @description:
 * @create :$2023-05-20
 */
public interface ScheduleService {
    //第三方医院(前端)排班列表的添加功能
    void saveSchedule(Map<String, Object> stringObjectMap);
    //第三方医院(前端)排班列表的查询显示功能
    Page<Schedule> getSchedulePage(Map<String, Object> stringObjectMap);
    //第三方医院(前端)排班列表的(删除)功能
    void remove(Map<String, Object> stringObjectMap);


    //前端排班 == 排班信息，预约天数，和分页展示
    Map<String, Object> page(Integer pageNum, Integer pageSize, String hoscode, String depcode);
    //前端排班 == 排班信息展示（第三部分展示）         //这里要换成date类型的因为mongodb是比较严谨的数据库，严格区分的
    List<Schedule> detail(String hoscode, String depcode, String workdate);

    //用户端带查询条件的排班信息
    Map<String, Object> getSchedulePageByCondition(String hoscode, String depcode, Integer pageNum, Integer pageSize);

    //根据排班id获取当天医生的详情信息||获取就诊人信息已经在PatientController里面的（查）方法完成
    Schedule getScheduleInfo(String scheduleId);


    ScheduleOrderVo getScheduleById(String scheduleId);
    //#<!--以前的不用了，用现在交换机生产者与消费者关系的第一步  -->第三步====自定义一个监听器
    boolean updateAvailableNumber(String scheduleId, Integer availableNumber);

    void cancelSchedule(String scheduleId);
}
